import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression


#
# https://blog.csdn.net/qq_44886601/article/details/140522897
#
def test1():
    # 设置 matplotlib 支持中文显示
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文显示
    plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号

    # 学习时长
    X = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).reshape(-1, 1)
    # 学习成绩
    y = np.array([20, 30, 35, 50, 60, 75, 80, 90, 95, 100])
    # 使用线性回归模型
    model = LinearRegression()
    # 训练模型
    model.fit(X, y)

    # 进行预测
    X_predict = np.array([11, 12, 13]).reshape(-1, 1)
    y_predict = model.predict(X_predict)

    # 原始数据点
    plt.scatter(X, y, color='red', label='实际时长、成绩')
    # 拟合的直线
    plt.plot(X, model.predict(X), color='blue', label='线性模型')
    # 预测点
    plt.scatter(X_predict, y_predict, color='green', label='预测')
    plt.xlabel('学习时长')
    plt.ylabel('实际成绩')
    plt.title('学习时长和成绩的关系')
    plt.legend()
    plt.show()


def test2():
    # 生成示例数据
    X = np.array([[1], [2], [3], [4], [5]])
    y = np.array([1 + 0.5, 2 + 0.5, 3 - 0.5, 4 - 0.3, 5 - 0.5])

    # 创建线性回归模型并拟合数据
    model = LinearRegression()
    model.fit(X, y)

    # 预测
    y_pred = model.predict(X)
    # 绘制结果

    plt.scatter(X, y, color='blue')
    plt.plot(X, y_pred, color='red')
    plt.title("Linear Regression Example")
    plt.xlabel("X")
    plt.ylabel("y")
    plt.show()
